import { nacosServiceManage, RegisterOptions } from "nacos-federation"
import { loadEnv } from 'vite';

console.log("process.env.NODE_ENV: ", process.env.NODE_ENV)

const env = loadEnv(
    process.env.NODE_ENV || 'development', // 环境模式（development/production）
    process.cwd() // 项目根目录（.env文件所在位置）
);

// 2. 定义配置（同步执行，无await）
const nacosConfig: RegisterOptions = {
    serverList: env.VITE_NACOS_ADDRESS,
    serviceName: env.VITE_SERVER_NAME,
    port: Number(env.VITE_SERVER_PORT),
    namespace: env.VITE_NACOS_NAMESPACE || 'public'
};

// 3. 声明实例变量（先不初始化）
let nacosInstance: nacosServiceManage | null = null;

// 4. 提供初始化函数（显式调用，避免顶级await）
export async function initNacosInstance() {
    if (nacosInstance) {
        return nacosInstance; // 已初始化则直接返回
    }
    // 首次调用时初始化
    nacosInstance = await nacosServiceManage.create(nacosConfig);
    console.log('Nacos 实例初始化完成');
    return nacosInstance;
}

// 5. 提供获取实例的方法（确保初始化后使用）
export async function getNacosInstance() {
    if (!nacosInstance) {
        // 若未初始化，先执行初始化
        return await initNacosInstance();
    }
    return nacosInstance;
}
